Skip to content

Distinct#520

Merged
AlexInLog merged 3 commits into
AlexInLog:v2from
CorentinBT:distinct
Feb 9, 2024
Merged

Distinct#520
AlexInLog merged 3 commits into
AlexInLog:v2from
CorentinBT:distinct

Conversation

@CorentinBT

Copy link
Copy Markdown
Contributor

No description provided.

Comment thread src/tests/rpp/test_distinct.cpp
@CorentinBT CorentinBT marked this pull request as ready for review February 8, 2024 20:43
@github-actions

github-actions Bot commented Feb 9, 2024

Copy link
Copy Markdown
Contributor

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 298.36 ns 2.16 ns 2.16 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 306.54 ns 2.17 ns 2.16 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 732.00 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1041.30 ns 5.25 ns 5.25 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2244.10 ns 143.05 ns 121.31 ns 1.18
defer from array of 1 - defer + create + subscribe + immediate 739.65 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2136.47 ns 57.99 ns 57.98 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3135.93 ns 32.13 ns 32.11 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1107.52 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 828.34 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1020.51 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 844.26 ns 0.31 ns 0.31 ns 0.99
immediate_just(1,2)+first()+subscribe 1307.37 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 921.08 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1127.75 ns 18.22 ns 19.16 ns 0.95

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 268.49 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 370.33 ns 7.10 ns 7.10 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 814.36 ns 63.69 ns 65.43 ns 0.97

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 862.90 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 913.16 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2362.59 ns 175.61 ns 170.38 ns 1.03
immediate_just+buffer(2)+subscribe 1568.64 ns 13.90 ns 14.82 ns 0.94
immediate_just+window(2)+subscribe + subscsribe inner 2280.30 ns 990.50 ns 981.81 ns 1.01

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 845.54 ns - - 0.00
immediate_just+take_while(true)+subscribe 838.00 ns 0.31 ns 0.31 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 2005.93 ns 0.31 ns 0.31 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 3510.21 ns 172.96 ns 180.19 ns 0.96
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3709.76 ns 166.92 ns 169.43 ns 0.99
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 135.58 ns 184.88 ns 0.73
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3546.76 ns 940.95 ns 955.76 ns 0.98

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.58 ns 12.03 ns 12.02 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1435.66 ns 14.20 ns 14.19 ns 1.00
basic sample with immediate scheduler 1422.57 ns 5.55 ns 5.55 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 903.22 ns 0.31 ns 0.31 ns 1.00

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 1065.87 ns 5.39 ns 3.91 ns 1.38
Subscribe empty callbacks to empty observable via pipe operator 1072.06 ns 5.38 ns 3.90 ns 1.38

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 2225.99 ns 0.44 ns 0.24 ns 1.85
from array of 1 - create + subscribe + current_thread 2790.88 ns 8.77 ns 26.06 ns 0.34
concat_as_source of just(1 immediate) create + subscribe 6586.41 ns 385.61 ns 331.65 ns 1.16
defer from array of 1 - defer + create + subscribe + immediate 2272.09 ns 0.27 ns 0.23 ns 1.16
interval - interval + take(3) + subscribe + immediate 6141.95 ns 91.37 ns 114.05 ns 0.80
interval - interval + take(3) + subscribe + current_thread 7424.91 ns 60.84 ns 106.34 ns 0.57

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 3498.12 ns 0.28 ns 0.23 ns 1.23
immediate_just+filter(true)+subscribe 2530.24 ns 0.28 ns 0.22 ns 1.28
immediate_just(1,2)+skip(1)+subscribe 3280.69 ns 0.28 ns 0.23 ns 1.23
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2369.88 ns 0.56 ns 0.46 ns 1.22
immediate_just(1,2)+first()+subscribe 3869.16 ns 0.28 ns 0.22 ns 1.28
immediate_just(1,2)+last()+subscribe 2874.82 ns 0.28 ns 0.22 ns 1.28
immediate_just+take_last(1)+subscribe 3663.33 ns 76.61 ns 66.48 ns 1.15

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 965.49 ns 5.73 ns 4.02 ns 1.42
current_thread scheduler create worker + schedule 1236.88 ns 14.69 ns 38.41 ns 0.38
current_thread scheduler create worker + schedule + recursive schedule 2204.80 ns 154.68 ns 214.99 ns 0.72

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 3168.70 ns 0.27 ns 0.23 ns 1.20
immediate_just+scan(10, std::plus)+subscribe 3028.87 ns 0.57 ns 0.46 ns 1.25
immediate_just+flat_map(immediate_just(v*2))+subscribe 6615.75 ns 484.95 ns 404.59 ns 1.20
immediate_just+buffer(2)+subscribe 3063.88 ns 74.20 ns 68.46 ns 1.08
immediate_just+window(2)+subscribe + subscsribe inner 6869.86 ns 2607.46 ns 2124.33 ns 1.23

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2375.93 ns - - 0.00
immediate_just+take_while(true)+subscribe 2388.91 ns 0.27 ns 0.23 ns 1.19

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 5947.03 ns 0.28 ns 0.23 ns 1.22

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 8851.56 ns 510.62 ns 442.48 ns 1.15
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 10062.46 ns 503.98 ns 438.41 ns 1.15
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 512.15 ns 464.24 ns 1.10
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 9766.29 ns 2275.97 ns 1861.70 ns 1.22

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 101.34 ns 62.19 ns 47.16 ns 1.32

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 3444.61 ns 59.59 ns 108.36 ns 0.55
basic sample with immediate scheduler 3643.58 ns 5.83 ns 14.73 ns 0.40

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2868.32 ns 0.27 ns 0.23 ns 1.20

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 249.54 ns 1.46 ns 1.54 ns 0.95
Subscribe empty callbacks to empty observable via pipe operator 245.32 ns 1.47 ns 1.54 ns 0.95

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 531.81 ns 0.29 ns 0.31 ns 0.94
from array of 1 - create + subscribe + current_thread 737.70 ns 5.16 ns 5.55 ns 0.93
concat_as_source of just(1 immediate) create + subscribe 1895.36 ns 104.83 ns 111.78 ns 0.94
defer from array of 1 - defer + create + subscribe + immediate 548.84 ns 0.29 ns 0.31 ns 0.95
interval - interval + take(3) + subscribe + immediate 1503.23 ns 53.03 ns 57.03 ns 0.93
interval - interval + take(3) + subscribe + current_thread 1972.87 ns 28.74 ns 30.86 ns 0.93

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 877.70 ns 0.28 ns 0.31 ns 0.92
immediate_just+filter(true)+subscribe 617.07 ns 0.29 ns 0.31 ns 0.95
immediate_just(1,2)+skip(1)+subscribe 859.79 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 643.63 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1020.80 ns 0.29 ns 0.31 ns 0.93
immediate_just(1,2)+last()+subscribe 757.19 ns 0.29 ns 0.31 ns 0.93
immediate_just+take_last(1)+subscribe 925.51 ns 0.28 ns 0.31 ns 0.92

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 182.32 ns 1.44 ns 1.54 ns 0.94
current_thread scheduler create worker + schedule 286.21 ns 5.13 ns 5.57 ns 0.92
current_thread scheduler create worker + schedule + recursive schedule 630.01 ns 56.21 ns 58.23 ns 0.97

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 644.82 ns 0.29 ns 0.31 ns 0.93
immediate_just+scan(10, std::plus)+subscribe 679.69 ns 0.28 ns 0.31 ns 0.91
immediate_just+flat_map(immediate_just(v*2))+subscribe 1672.07 ns 111.42 ns 119.24 ns 0.93
immediate_just+buffer(2)+subscribe 1297.65 ns 13.97 ns 15.13 ns 0.92
immediate_just+window(2)+subscribe + subscsribe inner 2015.58 ns 703.12 ns 761.85 ns 0.92

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 645.47 ns - - 0.00
immediate_just+take_while(true)+subscribe 615.82 ns 0.28 ns 0.31 ns 0.92

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1513.63 ns 0.29 ns 0.31 ns 0.95

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 2540.21 ns 121.40 ns 124.75 ns 0.97
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 2845.31 ns 113.81 ns 120.86 ns 0.94
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 107.91 ns 112.72 ns 0.96
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 2492.95 ns 669.65 ns 723.99 ns 0.92

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 22.33 ns 12.30 ns 12.95 ns 0.95

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 947.72 ns 13.33 ns 14.19 ns 0.94
basic sample with immediate scheduler 949.15 ns 5.84 ns 6.17 ns 0.95

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 735.03 ns 0.30 ns 0.31 ns 0.96

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 579.98 ns 4.02 ns 4.02 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 588.40 ns 4.01 ns 5.48 ns 0.73

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1188.66 ns 4.93 ns 6.28 ns 0.79
from array of 1 - create + subscribe + current_thread 1448.31 ns 20.39 ns 24.11 ns 0.85
concat_as_source of just(1 immediate) create + subscribe 4727.31 ns 173.59 ns 171.92 ns 1.01
defer from array of 1 - defer + create + subscribe + immediate 1208.63 ns 4.94 ns 4.93 ns 1.00
interval - interval + take(3) + subscribe + immediate 2959.69 ns 129.75 ns 129.63 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3483.89 ns 60.75 ns 60.80 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1882.75 ns 12.87 ns 12.88 ns 1.00
immediate_just+filter(true)+subscribe 1350.00 ns 12.40 ns 12.40 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1779.78 ns 13.05 ns 13.02 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1375.67 ns 15.94 ns 15.95 ns 1.00
immediate_just(1,2)+first()+subscribe 2444.14 ns 12.97 ns 12.96 ns 1.00
immediate_just(1,2)+last()+subscribe 1491.52 ns 14.13 ns 14.10 ns 1.00
immediate_just+take_last(1)+subscribe 2033.08 ns 59.37 ns 59.46 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 486.26 ns 7.29 ns 7.23 ns 1.01
current_thread scheduler create worker + schedule 659.31 ns 17.59 ns 18.21 ns 0.97
current_thread scheduler create worker + schedule + recursive schedule 1110.05 ns 110.47 ns 110.89 ns 1.00

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1339.58 ns 12.26 ns 12.32 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 1456.09 ns 21.29 ns 21.29 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 3512.97 ns 231.18 ns 229.72 ns 1.01
immediate_just+buffer(2)+subscribe 2655.97 ns 61.05 ns 60.86 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 4079.84 ns 1135.71 ns 1158.29 ns 0.98

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1600.90 ns 11.48 ns 11.46 ns 1.00
immediate_just+take_while(true)+subscribe 1348.62 ns 12.37 ns 12.37 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 3194.05 ns 7.40 ns 7.40 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5345.29 ns 243.42 ns 251.63 ns 0.97
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 6509.49 ns 244.26 ns 254.20 ns 0.96
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 223.44 ns 228.11 ns 0.98
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6248.21 ns 958.22 ns 963.94 ns 0.99

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 36.51 ns 25.28 ns 25.30 ns 1.00

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1890.10 ns 59.11 ns 59.40 ns 0.99
basic sample with immediate scheduler 1887.95 ns 37.03 ns 38.28 ns 0.97

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1793.30 ns 19.99 ns 19.97 ns 1.00

@codecov

codecov Bot commented Feb 9, 2024

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (721b469) 95.53% compared to head (e6c76af) 95.55%.

Additional details and impacted files
@@            Coverage Diff             @@
##               v2     #520      +/-   ##
==========================================
+ Coverage   95.53%   95.55%   +0.02%     
==========================================
  Files          80       81       +1     
  Lines        2105     2116      +11     
==========================================
+ Hits         2011     2022      +11     
  Misses         94       94              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@sonarqubecloud

sonarqubecloud Bot commented Feb 9, 2024

Copy link
Copy Markdown

@AlexInLog AlexInLog merged commit 4245c14 into AlexInLog:v2 Feb 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants